Methods and Systems for Dynamically Generating Contextual User Interface Elements

ABSTRACT

A method for dynamically generating at least one contextual user interface element within a user interface and establishing a connection between a first computing device associated with a user of the user interface and a second computing device associated with a contact center agent includes analyzing, by a user interface display component executing on a first computing device, a uniform resource locator of a web page while a user views the web page on a second computing device. The user interface display component identifies a plurality of support topics, accesses profile data associated with the user, and determines whether the profile data identifies an existing travel reservation. The user interface display component generates a first subset of the plurality of support topics and modifies a user interface displayed by the web page to include a user interface element associated with a support topic in the first subset.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. non-provisional patent application Ser. No. 17/369,407, filed Jul. 7, 2021, which claims priority from U.S. Provisional Patent Application No. 63/050,544, filed on Jul. 10, 2020, entitled “Methods and Systems for Dynamically Generating Contextual User Interface Elements,” which are hereby incorporated by reference.

BACKGROUND

The disclosure relates to methods for modifying user interface elements. More particularly, the methods and systems described herein relate to functionality for dynamically generating contextual user interface elements within a user interface and, in some embodiments, establishing a connection between a first computing device associated with a user of the user interface and a second computing device associated with a contact center agent, based upon a selection by the user of the dynamically generated at least one contextual user interface element.

Conventionally, user interfaces such as those found on web pages or in mobile applications may include functionality for connecting a user to an agent (e.g., a help desk agent or other support agent at a contact center) either by phone or via on-line, text-based communications (e.g., via synchronous chat). Conventional user interfaces may include user interface elements, such as buttons, that display one of a plurality of predefined messages the user may select before connecting the user to an agent, to expedite the identification of the user's needs. Conventional user interfaces may include user interface elements that direct the user to a knowledge base article and away from the interface for text-based communication with the agent. However, such interfaces do not typically use information available about the user to dynamically create new user interface elements based on user information or the context of the user request. Typically, “canned” button interfaces provide the same text regardless of what the user is doing at the time of the request and regardless of whether the system has access to any information about the user. Typically, redirecting a user to a knowledge base does not satisfy the user's needs and conventionally serves to reduce the number of user-agent chat sessions, not to improve the quality of the user interface available to the user prior to such a session or to improve the process of identifying an agent for connection to the user where the agent has the skills necessary to help the user. In conventional systems, should a user be connected with an agent who is unable to assist the user, the agent typically communicates with an agent that does have the ability to assist the user and then reports back to the user; such a system is typically inefficient. Thus, there is a need for improved methods of generating user interface elements.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other objects, aspects, features, and advantages of the disclosure will become more apparent and better understood by referring to the following description taken in conjunction with the accompanying drawings, in which:

FIG. 1A is a block diagram depicting an embodiment of a system for dynamically generating contextual user interface elements;

FIG. 1B is a block diagram depicting an embodiment of a system for dynamically generating contextual user interface elements;

FIG. 1C is a block diagram depicting an embodiment of a system for dynamically generating contextual user interface elements;

FIG. 2A is a flow diagram depicting an embodiment of a method for dynamically generating contextual user interface elements;

FIG. 2B is a flow diagram depicting an embodiment of a method for dynamically generating contextual user interface elements;

FIG. 2C is a flow diagram depicting an embodiment of a method for dynamically generating contextual user interface elements;

FIG. 3A is a flow diagram depicting an embodiment of a method for dynamically generating contextual user interface elements; and

FIG. 3B is a flow diagram depicting an embodiment of a method for dynamically generating contextual user interface elements; and

FIG. 3C is a flow diagram depicting an embodiment of a method for dynamically generating contextual user interface elements; and

FIGS. 4A-4C are block diagrams depicting embodiments of computers useful in connection with the methods and systems described herein.

DETAILED DESCRIPTION

The methods and systems described herein may provide functionality for dynamically generating contextual user interface elements. In some embodiments, the methods and systems described herein provide functionality that predicts a user's needs based on the user's interactions with a user interface (e.g., what the user views or what selections the user makes within a user interface in a web page or a mobile application) as well as based on external factors (e.g., whether the user has an existing travel reservation to a location where a storm is impacting travel), automatically retrieves reservation data selected based on an analysis of the context of the user's activity with the user interface, and leverages the retrieved data to enable skills-based routing to a support agent by pairing the identified needs determined from the interaction with the user interface (e.g., determining topics, skills required, and/or level of urgency determined from button presses made by the user in the user interface) with an optimal support agent for that user's needs, and establishing a network connection between the identified support agent and the user. The support agent may be a contact center agent, that is an individual working for a first entity that has made agents available for contact by a second entity, typically a consumer or other user of products or services made available by the first entity or an individual associated with such a user or consumer.

Referring now to FIG. 1A, a block diagram depicts one embodiment of a system for dynamically generating contextual user interface elements. In brief overview, the system 100 includes a computing device 106 a, a computing device 106 b, a computing device 106 c, a computing device 106 d, a client computing device 102, a profile database 120, a user interface display component 103, a browser 105, a web page 107, a user interface 109, and a routing component 111. The computing devices 106 a, 106 b, 106 c, 106 d, and 102 may be a modified type or form of computing device (as described in greater detail below in connection with FIGS. 4A-C) that have been modified to execute instructions for providing the functionality described herein; these modifications result in a new type of computing device that provides a technical solution to problems rooted in computer technology, such as dynamically generating new user interface elements and using selection of such elements in the establishment of a chat session between users (such as, for example, between a user and a support agent).

The user interface display component 103 may be provided as a software component. The user interface display component 103 may be provided as a hardware component. The computing device 106 a may execute the user interface display component 103. The user interface display component 103 may provide functionality for scanning a web page URL. The user interface display component 103 may provide functionality for retrieving data from support databases. The user interface display component 103 may provide functionality for retrieving data from the profile database 120. The user interface display component 103 may provide functionality for retrieving data from traveler reservation databases. The user interface display component 103 may provide functionality for retrieving data from alert databases. The user interface display component 103 may provide functionality for selecting a user interface element to dynamically generated based on a user interaction with a user interface. The user interface display component 103 may include, or have access to, a mapping between an identifier, such as a uniform resource locator or an identifier of a screen displayed within a mobile application, and at least one support topic. The user interface display component 103 may include, or have access to, a mapping between the at least one support topic and a user interface element.

The user interface display component 103 includes functionality for generating user interface elements for display within the user interface 109. The user interface display component 103 may provide functionality for transmitting, to the client computing device 102, data for use in rendering the generated user interface elements.

User interface elements may include buttons. User interface elements may include context buttons, which may be, for example and without limitation, buttons that display pre-composed messages on behalf of a user and that allows the system to identify, and connect the user to, a support agent. User interface elements may include a fill-in-the-blank style user interface element where the user begins typing in a sentence describing a need and the system 100 may provide auto-complete functionality to assist the user in constructing the sentence. Referring ahead to FIG. 1C, a block diagram depicts one embodiment of the user interface 109 modified to include a dynamically generated user interface element selected by the user interface display component 103. In the embodiment depicted by FIG. 1C, the user interface display component 103 determined to generate three user interface elements (buttons in this embodiment) relating to the support topics of changing a flight, changing a seat within a flight, and receiving help with payment issues. The user interface display component 103 also determined that the user interface 109 should include a description of departure and arrival cities and a flight date and time in a section of the user interface 109 displaying the dynamically generated user interface elements.

Referring back to FIG. 1A, the user interface display component 103 may include functionality for receiving, from the browser 105, an identification of a user interface element selected by a user. The user interface display component 103 may include functionality for transmitting, to the routing component 111, the identification of the user interface element selected by the user.

The routing component 111 may be provided as a software component. The routing component 111 may be provided as a hardware component. The computing device 106 b may execute the routing component 111. The routing component 111 may include functionality for analyzing an identification of a user interface element selected by a user and identifying attributes mapped to the user interface element.

The routing component 111 may include, or have access to, a mapping between a user interface element and an attribute. A user of the system 100 may identify one or more attributes assigned to each user interface element available for dynamic generation. By way of example, and without limitation, a user interface element with a text label reading “Change this flight” may be mapped to an attribute related to flight changes (e.g., is this a GDS Sabre booking or a booking associated with a particular web site). An attribute may include, without limitation, an identifier of a traveler type (e.g., VIP or regular). An attribute may include, without limitation, an identifier of another attribute needed to assist users selecting that particular user interface element (e.g., a specific skill needed in order to manage flight changes). By way of example, and without limitation, attributes may include user-specific attributes (e.g., user's preferred language and account type, such as VIP, road warrior, influencer, etc.) and attributes about the booking (e.g., booking type such as car or train or hotel or flight, vendor/supplier data such as Sabre or Expedia, booking status such as canceled or delayed, booking location such as a geographic region). The routing component 111 may include, or have access to, a mapping between at least one attribute and an identification of at least one contact center agent having the at least one attribute. An administrative user of the system 100 may identify one or more contact center agents and associate each of the one or more contact center agents with at least one attribute (e.g., does this agent have the skills needed to manage a flight change for a Sabre GDS booking); the system 100 may provide a user interface to such a user with which the user may “tag” contact center agents with skills. Agent skills may include, without limitation, skills working with particular customer type (e.g., VIP, road warrior, influencer, etc.), preferred language, performable actions (e.g., flight changes, train changes, etc.), general product area knowledge (e.g., flights, hotels, trains, etc.), and agent type (e.g., new hire, mid-level, or senior).

The routing component 111 includes functionality for selecting a contact center agent for the user to contact. The routing component 111 may include functionality for establishing a connection between the user and the contact center agent. The routing component 111 may include functionality for putting the user in a queue of users waiting to speak with the contact center agent.

The client computing device 102 may execute the browser application 105. The browser application 105 may be communication with the computing device 106 a to display data retrieved from the computing device 106 a, resulting in rendering of the web page 107. The user interface 109 may be a component displayed by the browser 105 within the web page 107.

The computing device 106 a may include or be in communication with the database 120. The database 120 may store data related to user profiles. For example, the database 120 may store data related to user information stored by the system in connection with a service provided via the user interface. As another example, in embodiments in which the system 100 provides assistance with travel-related reservations the database 120 may store data such as, and without limitation, user account data, existing travel reservation data (whether for completed or for upcoming travel reservations), and corporate data associated with the user (such as, for example and without limitation, loyalty rewards plans or corporate travel and expense policies). The database 120 may be an ODBC-compliant database. For example, the database 120 may be provided as an ORACLE database, manufactured by Oracle Corporation of Redwood Shores, CA. In other embodiments, the database 120 may be a Microsoft ACCESS database or a Microsoft SQL server database, manufactured by Microsoft Corporation of Redmond, WA. In other embodiments, the database 120 can be a SQLite database distributed by Hwaci of Charlotte, NC, or a PostgreSQL database distributed by The PostgreSQL Global Development Group. In still other embodiments, the database 120 may be a custom-designed database based on an open source database, such as the MYSQL family of freely available database products distributed by Oracle Corporation of Redwood City, CA. In other embodiments, examples of databases include, without limitation, structured storage (e.g., NoSQL-type databases and BigTable databases), HBase databases distributed by The Apache Software Foundation of Forest Hill, MD, MongoDB databases distributed by 10Gen, Inc., of New York, NY, an AWS DynamoDB distributed by Amazon Web Services and Cassandra databases distributed by The Apache Software Foundation of Forest Hill, MD. In further embodiments, the database 120 may be any form or type of database.

Although, for ease of discussion, the user interface display component 103, the routing component 111, and the database 120 are described in FIG. 1 a as separate modules, it should be understood that this does not restrict the architecture to a particular implementation. For instance, these components may be encompassed by a single circuit or software function or, alternatively, distributed across a plurality of computing devices.

FIG. 1B is a block diagram depicting one embodiment of the system 100 in which, instead of accessing a web page, the user accesses a mobile application executing on a computing device of the user, such as a mobile device. As depicted in FIG. 1B, the system 100 includes a computing device 106 a, a computing device 106 b, a client computing device 102, a profile database 120, a user interface display component 103, a mobile application 113, a screen 115 (which may also be referred to as a view 115), a user interface 117, and a routing component 111. The computing devices 106 a, 106 b, and 102 may be computing devices 106 a, 106 b, and 102 as described above in connection with FIG. 1A. The user interface display component 103 may provide the functionality of the user interface display component 103 as described above in connection with FIG. 1A. The routing component 111 may provide the functionality of the routing component 111 as described above in connection with FIG. 1A. the mobile application 113 may be a mobile app provided by an entity with which a user is seeking to interact. As will be understood by those of skill in the art, the identifier of the screen displayed by the mobile application may be referred to as a “screen”, a “view”, a “scene”, or a “page” each of which identifies a portion of user interface within a mobile application 113 rendered on the user's device 102. The user interface 117 may provide the functionality described in connection with the user interface 109.

Referring now to FIG. 2A, in brief overview, a flow diagram depicts one embodiment of a method 200 for dynamically generating at least one contextual user interface element within a user interface and establishing a connection between a first computing device associated with a user of the user interface and a second computing device associated with a contact center agent, based upon a selection by the user of the dynamically generated at least one contextual user interface element. The method 200 includes analyzing, by a user interface display component executing on a first computing device, a uniform resource locator (URL) of a web page while a user views the web page on a second computing device (202). The method 200 includes identifying, by the user interface display component, a plurality of support topics associated with the URL (204). The method 200 includes accessing, by the user interface display component, profile data associated with the user (206). The method 200 includes determining, by the user interface display component, whether the profile data associated with the user identifies an existing travel reservation of the user (208). The method 200 includes generating, by the user interface display component, a first subset of the plurality of support topics (210). The method 200 includes modifying, by the user interface display component, a user interface displayed by the web page to include at least one user interface element associated with a support topic in the first subset of the plurality of support topics (212).

In some embodiments, the system 100 provides functionality for dynamically generating contextual user interface elements and adding those elements to a user interface (including, without limitation, generating contextual buttons and adding those buttons to a chat interface).

Referring now to FIG. 2A, in greater detail and in connection with FIG. 1 , the method 200 includes analyzing, by a user interface display component executing on a first computing device, a uniform resource locator (URL) of a web page while a user views the web page on a second computing device (202). In one embodiment, the browser 105 to transmit the URL to the user interface display component 103. In one embodiment, when the user interacts with a portion of the user interface 109 that results in a modification to the URL, the browser 105 transmits the URL to the chat server 106 a; this allows for user interface elements in the user interface 109 to be updated and/or dynamically generated when the user accesses a portion of the user interface 109 associated with a connecting to a contact center agent. In some embodiments, the browser 105 requests display logic on page load but also transmits the URL during on-screen events that modify the URL (e.g., clicking on a particular flight in an itinerary may not load a new page but may modify the URL); with the modified URL, the system 100 determines that the user is accessing a specific type of data or specific section of the user interface 109 and update the user interface elements accordingly.

The method 200 includes identifying, by the user interface display component, a plurality of support topics associated with the URL (204). The user interface display component 103 may access a mapping between the URL and the plurality of support topics. By way of example, and without limitation, the user interface display component 103 may access a data structure (such as a table) that maps URLs to one or more support topics.

The method 200 includes accessing, by the user interface display component, profile data associated with the user (206). The user interface display component 103 may access the profile database 120 to retrieve profile data associated with the user. In some embodiments, a user has logged in to an account provided by the system 100 and the user interface display component 103 may access profile data associated with the user (or request access to such data) using the unique user identifier associated with the user's account. In other embodiments, biometric data may be used to identify a user and identify the user's associated profile data.

The method 200 includes determining, by the user interface display component, whether the profile data associated with the user identifies an existing travel reservation of the user (208). The profile data associated with the user may identify an existing travel reservation for an upcoming travel reservation. The profile data associated with the user may identify an existing travel reservation for a past travel reservation. The profile data associated with the user may identify an existing travel reservation for a travel reservation the user is currently using (e.g., the user may be midway through a hotel stay). The user interface display component 103 may request profile data indicating whether the user is associated with an existing travel reservation from the computing device 106 c. The computing device 106 c may periodically check for updates to these trips from external, third party sources (e.g., delay and cancelation information) and may automatically update the profile data associated with the user with that trip information. When the user interface display component 103 requests profile data associated with the user, the trips and the status of the trips (if any) is included in the response. In some embodiments, the user identifier associated with the user's account in the system 100 is used to request information about upcoming trips and the URL is used to focus the search (for example, if the user is reviewing an itinerary for a specific trip, a unique identifier of that trip is included in the URL and the request may be specifically made for information associated with that trip).

The method 200 includes generating, by the user interface display component, a first subset of the plurality of support topics (210). The user interface display component 103 may use profile data associated with the user to filter the plurality of support topics. By way of example, the user interface display component 103 may identify a plurality of support topics associated with making changes to existing flights based on a determination that the user is viewing a portion of the web page that relates to an existing flight; the user interface display component 103 may then filter out any of the support topics that do not relate to changes to flight amenities for upcoming flights if profile data associated with the user suggests that, for example, the user has a preference for a particular type of seat or cabin class that is different than what is assigned for the existing flight the user is viewing (e.g., keeping support topics related to changing seat assignments and filtering out support topics on canceling a flight). As one example, when a user is accessing a home page of the system 100, the user may need support with managing trips (canceling or changing trips) but if the user has no trips booked, they are more likely to need support booking a new trip and the system can determine the likelihood of the user needing one support topic instead of another; for new users, the system might determine that the user may need support in using the site, in learning about travel policies (e.g., for corporate travel), or in learning how to redeem their loyalty rewards. Based on how long a user has accessed data about a particular product or portion of a user interface, whether or not the user has any bookings associated with their profile, and the status of those bookings, the system 100 may dynamically generate and modify the user interface elements displayed to the user. As another example, relating to flight itinerary details, if a user is accessing data associated with a flight within an itinerary, there are many potential user interface elements that could be shown, the most common of which would be for assistance with a flight change (particularly if a flight is delayed or canceled or in less than a threshold period of time); however, for a flight with an on-time departure and within the check-in window, the user might want help checking in, learning about the baggage policy for the flight, or getting a new seat—unless the flight is on an open seating airline (such as Southwest) in which case seat selection assistance is not a relevant support topic. Continuing with this example, after the flight is past, information about flight changes, cancelations, check-ins, or baggage is not relevant to the user but they may need help with an invoice for a seat upgrade requested at the gate. Throughout the user's journey, the logic of what to display in the user interface elements offering support to the user is periodically updated as the system 100 determines what support topics are more useful to the user.

The user interface display component 103 may determine that the profile data associated with the user includes an identification of an existing travel reservation of the user. The user interface display component 103 may identify a status of the existing travel reservation. The user interface display component 103 may filter the first subset of the plurality of support topics based upon the identified status, generating a second subset of the plurality of support topics. The user interface display component 103 may determine that the profile data associated with the user includes an identification of an existing travel reservation of the user. For example, the user has an existing travel reservation that has been delayed or modified, the user interface display component 103 may further filter the support topics.

The user interface display component 103 may access a third-party database storing data associated with the existing travel reservation of the user. The user interface display component 103 may filter the first subset of the plurality of support topics based upon the identified status, generating a second subset of the plurality of support topics. For example, if a third-party database indicates that there is a storm impacting a region to which the user had planned to travel, the user interface display component may further filter the support topics accordingly.

The user interface display component 103 may select one or more user interface elements to display, each of which is associated with at least one of the support topics in the subset of the plurality of support topics. The user interface display component 103 may access a mapping between support topics and user interface elements to make the selection.

The methods and systems described herein may provide functionality for combining user data generated by the system 100 (e.g., booking details) with externally created, third party data (e.g., flight status information published by an airline instead of generated by the system 100) to determine what a user is likely to need help with and then generating the user interface elements that link the user to support directed to that determined support topic.

The method 200 includes modifying, by the user interface display component, a user interface displayed by the web page to include at least one user interface element associated with a support topic in the first subset of the plurality of support topics (212). The button display component 103 may transmit, to the browser 105 on the client computing device 102, an enumeration of user interface elements to display and data for displaying the enumerated user interface elements within the user interface 109. The browser 105 may then modify the user interface to include a rendering of the user interface element. The modification may be made to a portion of the user interface associated with a communications session (e.g., to a chat box area of the user interface).

The user interface display component 103 may also direct the modification of the user interface to include a display of a subset of the data associated with the existing travel reservation. For example, the user interface display component 103 may instruct the browser 105 to add a flight number retrieved from the profile database to the user interface 109.

Referring now to FIG. 2B, in brief overview, a flow diagram depicts one embodiment of a method 200 for dynamically generating at least one contextual user interface element within a user interface and establishing a connection between a first computing device associated with a user of the user interface and a second computing device associated with a contact center agent, based upon a selection by the user of the dynamically generated at least one contextual user interface element. The method 200 includes analyzing, by a user interface display component executing on a first computing device, a uniform resource locator (URL) of a web page while a user views the web page on a second computing device (202). The method 200 includes identifying, by the user interface display component, a plurality of support topics associated with the URL (204). The method 200 includes accessing, by the user interface display component, profile data associated with the user (206). The method 200 includes determining, by the user interface display component, whether the profile data associated with the user identifies an existing travel reservation of the user (208). The method 200 includes generating, by the user interface display component, a first subset of the plurality of support topics (210). The method 200 includes modifying, by the user interface display component, a user interface displayed by the web page to include at least one user interface element associated with a support topic in the first subset of the plurality of support topics (212). The method 200 includes receiving, by the user interface display component, an identification of user selection of the at least one user interface element (214). The method 200 includes transmitting, by the user interface display component, to a routing component executing on the first computing device, an identification of the at least one user interface element (216). The method 200 includes establishing, by the routing component, a network connection between the second computing device associated with the user and a third computing device associated with a contact center agent having at least one attribute associated with the at least one user interface element (218).

In some embodiments, (202), (204), (206), (208), (210), and (212) may execute as described above in connection with FIG. 2A.

The method 200 includes receiving, by the user interface display component, an identification of user selection of the at least one user interface element (214). The method 200 includes transmitting, by the user interface display component, to a routing component executing on the first computing device, an identification of the at least one user interface element (216).

The method 200 includes establishing, by the routing component, a network connection between the second computing device associated with the user and a third computing device associated with the identified contact center agent (218). The third computing device may be the computing device 106 d. The routing component 111 may establish a connection over which the user and the contact center may conduct a text-based “chat” session. By way of example, and without limitation, the chat server 106 a may provide the routing component 111 with the information about the user and the selected user interface element with a request to connect the user to a contact center agent; upon identifying a contact center agent and determining the agent is available to assist with the user, the routing component 111 may transmit a notification to the identified agent and when the agent accepts the task of connecting with the user, the routing component 111 creates an active communication channel between the user and the agent, allowing the two parties to communicate. Alternatively, the routing component 111 may establish a connection over which the user and the contact center agent may conduct a voice-based “phone” conversation (whether conducted via conventional phone calls, Voice over IP calls, cell phone calls, video calls, or other voice-based exchange).

Referring now to FIG. 2C, in brief overview, a flow diagram depicts one embodiment of a method 200 for dynamically generating at least one contextual user interface element within a user interface and establishing a connection between a first computing device associated with a user of the user interface and a second computing device associated with a contact center agent, based upon a selection by the user of the dynamically generated at least one contextual user interface element. The method 200 includes analyzing, by a user interface display component executing on a first computing device, a uniform resource locator (URL) of a web page while a user views the web page on a second computing device (202). The method 200 includes identifying, by the user interface display component, a plurality of support topics associated with the URL (204). The method 200 includes accessing, by the user interface display component, profile data associated with the user (206). The method 200 includes determining, by the user interface display component, whether the profile data associated with the user identifies an existing travel reservation of the user (208). The method 200 includes generating, by the user interface display component, a first subset of the plurality of support topics (210). The method 200 includes modifying, by the user interface display component, a user interface displayed by the web page to include at least one user interface element associated with a support topic in the first subset of the plurality of support topics (212). The method 200 includes receiving, by the user interface display component, an identification of user selection of the at least one user interface element (214). The method 200 includes transmitting, by the user interface display component, to a routing component executing on the first computing device, an identification of the at least one user interface element (216). The method 200 includes establishing, by the routing component, a network connection between the second computing device associated with the user and a third computing device associated with a contact center agent having at least one attribute associated with the at least one user interface element (218). The establishment of the network connection (218), as depicted in FIG. 2C, includes accessing, by the routing component executing on the first computing device, a first mapping between the identification of the at least one user interface element and at least one attribute (220) and includes accessing, by the routing component, a second mapping between the at least one attribute and an identification of a first contact center agent having the at least one attribute (222).

The method 200 includes accessing, by the routing component, a first mapping between the identification of the at least one user interface element and at least one attribute (220). The identification of the at least one user interface element may include information such as a purpose of the request or an identifier of an airline and the routing component 111 may identify an attribute associated with each item of information received with the identification of the at least one user interface element. For example, and without limitation, the routing component 111 may receive the following text: “Name: JDoe/Type: VIP/Language: English/Purpose: Flight Booking/Additional Data: [Airline:Southwest, FlightNumber: WN 1315, Dates: July 20-July 25]” and the routing component 111 may access one or more mappings for each of those pieces of information and determine to identify an agent who has attributes including skilled for the purpose of flight booking and skilled at managing Southwest flight bookings and skilled at supporting VIP users.

The method 200 includes accessing, by the routing component, a second mapping between the at least one attribute and an identification of a first contact center agent having the at least one attribute (222). The routing component 111 uses the attributes identified from the identification of the at least one user interface element to identify the first contact center agent. The routing component 111 may have a threshold amount of time in which to identify the first contact center agent and determine whether the first contact center agent is available (e.g., the routing component 111 may have 20 seconds to identify an available agent satisfying all the attributes). In the event that the routing component 111 does not identify the first contact center agent, or does not do so within a requisite period of time, the routing component 111 may remove one of the attributes in the list of attributes desired in a contact center agent. If the routing component 111 had unsuccessfully searched for an agent who had attributes including skilled for the purpose of flight booking and skilled at managing Southwest flight bookings and skilled at supporting VIP users, the routing component 111 may determine to remove the attributed of being skilled at managing Southwest flight bookings, searching instead for an agent who had attributes including skilled for the purpose of flight booking and skilled at supporting VIP users; if that search is also unsuccessful, the routing component 111 may then search for an agent who had attributes including skilled at supporting VIP users. If the routing component 111 cannot identify a contact center agent having any of the attributes, the routing component 111 may identify any available contact center agent.

Before establishing the network connection, the routing component 111 may determine whether the identified first contact center agent is available to conduct a communications session with the user. The routing component 111 may determine whether a value of an agent state identifier indicates that the identified first contact center agent is available (e.g., determining whether the agent is working at the moment or on break). The routing component 111 may determine whether a value of an agent capacity identifier indicates that the identified first contact center agent is available (e.g., whether the agent is already conducting a number of communications sessions with other users that exceeds a threshold number of communications sessions allowed per agent; for example, a threshold may specify that an agent may conduct two text-based chat sessions or one phone call).

The routing component 111 may determine that the identified first contact center agent is unavailable to conduct a communications session with the user. If the first contact center agent is unavailable, the routing component 111 may identify a second contact center agent having the at least one attribute (e.g., by accessing a second mapping between the at least one attribute and the second contact center agent) and that the identified second contact center agent is available for a communications session with the user; the routing component 111 may then establish the network connection between the second computing device associated with the user and a fourth computing device associated with the identified second contact center agent. The second contact center agent may not have the at least one attribute. The second contact center agent may be associated with an attribute that is a super set of an attribute set containing the at least one attribute; for example, the at least one attribute may have specified that a contact center agent helping a particular user should have experience in performing flight changes for flights provided by a particular airline and the second contact center agent may not have that specific skill but may be skilled at performing flight changes for users.

Upon determining that an identified contact center agent is available for a communications session with the user, the routing component 111 may provide, to the identified contact center agent, a subset of the data associated with the existing travel reservation. The routing component 111 may apply one or more rules to the data associated with the existing travel reservation to determine whether to provide a portion of the data to the identified contact center agent. By way of example, and without limitation, a rule may specify that the routing component 111 should provider the agent with an identification of whether a flight is delayed or canceled. As another example, a rule may specify that the routing component 111 should provider the agent with a booking identifier or other identifier the agent can use to retrieve booking data, including user profile data and one or more tools to service that booking. As a further example, a rule may specify that the routing component 111 should provider the agent with one or more phone numbers relevant to assisting the user, such as, without limitation, hotel phone numbers, vendor phone numbers, ticketing airline phone numbers and/or airline ticket vendor phone numbers.

In summary, to determine which buttons to show, the system 100 may predict a user's needs by analyzing a URL identifying where the user is in a user interface (e.g., are they on a checkout page or a search page?) and matching this URL with support invocation data to identify the most common support needs for the chats that are initiated from that URL, filtering those common support requests by what the user has booked (or is in the process of booking) and eliminating those support requests that are not relevant to the user (e.g., support for changing an existing hotel reservation would not be relevant to a user who does not have an existing hotel reservation), and increasing a level of likelihood that a user will need those topics that are more likely to be relevant based on a status of the user's booking (e.g., if the user has an existing reservation for a flight that was recently delayed by three hours, the probability that they are reaching out about a flight change increases and thus support topics related to flight changes are more likely to be relevant to the user). Continuing with this summary, the system 100 associates attributes with each of the user interface elements available for generation and adding to a user interface so that when the user clicks on one of the user interface elements, the system 100 can determine which attributes a support agent should have in order to provide optimal support to that user, as well as to understand the topic of interest to the user, the skills required, and the level of urgency (e.g., are they traveling right now, did their flight just get canceled, are they two weeks away from the start of travel and wondering if they have reserved a non-smoking room, etc.). By selecting user interface elements chosen based on what a user is doing in a user interface element (instead of, for example, providing only canned responses or redirections to knowledge bases or performing natural language processing on user-provided text-based input), the methods and systems described herein may provide data-driven choices to a user and then connect the user with the appropriate agent based on the user's selection. By making decisions for selecting agents and connecting agents and users based on user behavior within a user interface and system data about the user, the methods and systems described herein provide improved functionality for connecting users with what they need instead of parsing the user's language, which may shorten the handle time for each agent-user interaction without putting a burden on the user.

Referring now to FIG. 3A, in brief overview, a flow diagram depicts one embodiment of a method 300 for dynamically generating at least one contextual user interface element within a user interface and establishing a connection between a first computing device associated with a user of the user interface and a second computing device associated with a contact center agent, based upon a selection by the user of the dynamically generated at least one contextual user interface element. The method 300 includes analyzing, by a user interface display component executing on a first computing device, an identifier of a screen displayed, within a mobile application, to a user viewing the mobile application on a second computing device (302). The method 300 includes identifying, by the user interface display component, a plurality of support topics associated with the identifier of the screen (304). The method 300 includes accessing, by the user interface display component, profile data associated with the user (306). The method 300 includes determining, by the user interface display component, whether the profile data associated with the user identifies an existing travel reservation of the user (308). The method 300 includes generating, by the user interface display component, a first subset of the plurality of support topics (310). The method 300 includes modifying, by the user interface display component, a user interface displayed by the web page to include at least one user interface element associated with a support topic in the first subset of the plurality of support topics (312).

Referring to FIG. 3A in greater detail, and in connection with FIGS. 2A-2C, the method 300 includes analyzing, by a user interface display component executing on a first computing device, an identifier of a screen displayed, within a mobile application, to a user viewing the mobile application on a second computing device (302). As one example, an identifier may be “home”.

The method 300 includes identifying, by the user interface display component, a plurality of support topics associated with the identifier of the screen (304). The user interface display component 103 may identify the plurality of support topics as described above in connection with FIG. 2 and identifying the plurality of support topics associated with the URL. In some embodiments, the user interface display component 103 identifies a device parameter (e.g., web, iOS, and Android) within the received identifier of the screen and identify a plurality of support topics associated with the device parameter.

The method 300 includes accessing, by the user interface display component, profile data associated with the user (306). The user interface display component 103 may access the profile data as described above in connection with FIG. 2A, (206).

The method 300 includes determining, by the user interface display component, whether the profile data associated with the user identifies an existing travel reservation of the user (308). The user interface display component 103 may determine whether the profile data associated with the user identifies an existing travel reservation of the user as described above in connection with FIG. 2A, (208).

The method 300 includes generating, by the user interface display component, a first subset of the plurality of support topics (310). The user interface display component 103 may generate the first subset of the plurality of support topics as described above in connection with FIG. 2A, (210).

The method 300 includes modifying, by the user interface display component, a user interface displayed by the web page to include at least one user interface element associated with a support topic in the first subset of the plurality of support topics (312). The user interface display component 103 may modify the user interface as described above in connection with FIG. 2A, (212).

Referring now to FIG. 3B, in brief overview, a flow diagram depicts one embodiment of a method 300 for dynamically generating at least one contextual user interface element within a user interface and establishing a connection between a first computing device associated with a user of the user interface and a second computing device associated with a contact center agent, based upon a selection by the user of the dynamically generated at least one contextual user interface element. The method 300 includes analyzing, by a user interface display component executing on a first computing device, an identifier of a screen displayed, within a mobile application, to a user viewing the mobile application on a second computing device (302). The method 300 includes identifying, by the user interface display component, a plurality of support topics associated with the identifier of the screen (304). The method 300 includes accessing, by the user interface display component, profile data associated with the user (306). The method 300 includes determining, by the user interface display component, whether the profile data associated with the user identifies an existing travel reservation of the user (308). The method 300 includes generating, by the user interface display component, a first subset of the plurality of support topics (310). The method 300 includes modifying, by the user interface display component, a user interface displayed by the web page to include at least one user interface element associated with a support topic in the first subset of the plurality of support topics (312). The method 300 includes receiving, by the user interface display component, an identification of user selection of the at least one user interface element (314). The method 300 includes transmitting, by the user interface display component, to a routing component executing on the first computing device, an identification of the at least one user interface element (316). The method 300 includes establishing, by the routing component, a network connection between the second computing device associated with the user and a third computing device associated with the identified contact center agent (318).

In some embodiments, (302), (304), (306), (308), (310), and (312) may execute as described above in connection with FIG. 3A.

The method 300 includes receiving, by the user interface display component, an identification of user selection of the at least one user interface element (314). The user interface display component 103 may receive the identification as described above in connection with FIG. 2B, (214).

The method 300 includes transmitting, by the user interface display component, to a routing component executing on the first computing device, an identification of the at least one user interface element (316). The user interface display component 103 may transmit the identification as described above in connection with FIG. 2B, (216).

The method 300 includes establishing, by the routing component, a network connection between the second computing device associated with the user and a third computing device associated with the identified contact center agent (318). The routing component 111 may establish the network connection as described above in connection with FIG. 2B, (218).

Referring now to FIG. 3C, in brief overview, a flow diagram depicts one embodiment of a method 300 for dynamically generating at least one contextual user interface element within a user interface and establishing a connection between a first computing device associated with a user of the user interface and a second computing device associated with a contact center agent, based upon a selection by the user of the dynamically generated at least one contextual user interface element. The method 300 includes analyzing, by a user interface display component executing on a first computing device, an identifier of a screen displayed, within a mobile application, to a user viewing the mobile application on a second computing device (302). The method 300 includes identifying, by the user interface display component, a plurality of support topics associated with the identifier of the screen (304). The method 300 includes accessing, by the user interface display component, profile data associated with the user (306). The method 300 includes determining, by the user interface display component, whether the profile data associated with the user identifies an existing travel reservation of the user (308). The method 300 includes generating, by the user interface display component, a first subset of the plurality of support topics (310). The method 300 includes modifying, by the user interface display component, a user interface displayed by the web page to include at least one user interface element associated with a support topic in the first subset of the plurality of support topics (312). The method 300 includes receiving, by the user interface display component, an identification of user selection of the at least one user interface element (314). The method 300 includes transmitting, by the user interface display component, to a routing component executing on the first computing device, an identification of the at least one user interface element (316). The method 300 includes establishing, by the routing component, a network connection between the second computing device associated with the user and a third computing device associated with a contact center agent having at least one attribute associated with the at least one user interface element (318). The establishment of the network connection (318) as depicted in FIG. 3C includes accessing, by the routing component executing on the first computing device, a first mapping between the identification of the at least one user interface element and at least one attribute (320) and includes accessing, by the routing component, a second mapping between the at least one attribute and an identification of a first contact center agent having the at least one attribute (322).

The method 300 includes accessing, by the routing component executing on the first computing device, a first mapping between the identification of the at least one user interface element and at least one attribute (320). The routing component 111 may access the first mapping as described above in connection with FIG. 2C, (220).

The method 300 includes accessing, by the routing component, a second mapping between the at least one attribute and an identification of a first contact center agent having the at least one attribute (322). The routing component 111 may access second first mapping as described above in connection with FIG. 2C, (222).

In one embodiment, a method for dynamically generating at least one contextual user interface element within a user interface and establishing a connection between a first computing device associated with a user of the user interface and a second computing device associated with a contact center agent, based upon a selection by the user of the dynamically generated at least one contextual user interface element. The method includes analyzing, by a user interface display component executing on a first computing device, a uniform resource locator (URL) of a web page while a user views the web page on a second computing device. The method includes accessing, by the user interface display component, profile data associated with the user. The method 200 includes determining, by the user interface display component, whether the data associated with the user identifies an existing travel reservation of the user. The method 200 includes identifying, by the user interface display component, a plurality of support topics associated with the URL. The method 200 includes modifying, by the user interface display component, a user interface displayed by the web page to include at least one user interface element associated with a support topic in the plurality of support topics. That is, in contrast to the embodiments described above in connection with FIGS. 2A-2C and 3A-3C, in which an initial set of support topics is identified based on a page identifier or a screen identifier and is later filtered down to a smaller subset, in an alternative embodiment, the method may include using the page identifier and the data associated with the user to create a single list of support topics which may then be displayed to the user (or for which associated user interface elements may be displayed to the user).

Therefore, although described above in connection with dynamically generating at least one contextual user interface element within a user interface provided within a web browser application, the methods and systems described herein may also dynamically generate at least one contextual user interface element within a user interface provided within a mobile application (e.g., an application executing on a smart phone or other handheld computing device).

In some embodiments, the system 100 includes non-transitory, computer-readable medium comprising computer program instructions tangibly stored on the non-transitory computer-readable medium, wherein the instructions are executable by at least one processor to perform each of the steps described above in connection with FIGS. 2A-C and FIGS. 3A-C.

It should be understood that the systems described above may provide multiple ones of any or each of those components and these components may be provided on either a standalone machine or, in some embodiments, on multiple machines in a distributed system. The phrases ‘in one embodiment,’ ‘in another embodiment,’ and the like, generally mean that the particular feature, structure, step, or characteristic following the phrase is included in at least one embodiment of the present disclosure and may be included in more than one embodiment of the present disclosure. Such phrases may, but do not necessarily, refer to the same embodiment. However, the scope of protection is defined by the appended claims; the embodiments mentioned herein provide examples.

The terms “A or B”, “at least one of A or/and B”, “at least one of A and B”, “at least one of A or B”, or “one or more of A or/and B” used in the various embodiments of the present disclosure include any and all combinations of words enumerated with it. For example, “A or B”, “at least one of A and B” or “at least one of A or B” may mean (1) including at least one A, (2) including at least one B, (3) including either A or B, or (4) including both at least one A and at least one B.

The systems and methods described above may be implemented as a method, apparatus, or article of manufacture using programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. The techniques described above may be implemented in one or more computer programs executing on a programmable computer including a processor, a storage medium readable by the processor (including, for example, volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device. Program code may be applied to input entered using the input device to perform the functions described and to generate output. The output may be provided to one or more output devices.

Each computer program within the scope of the claims below may be implemented in any programming language, such as assembly language, machine language, a high-level procedural programming language, or an object-oriented programming language. The programming language may, for example, be LISP, PROLOG, PERL, C, C++, C#, JAVA, or any compiled or interpreted programming language.

Each such computer program may be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a computer processor. Method steps may be performed by a computer processor executing a program tangibly embodied on a computer-readable medium to perform functions of the methods and systems described herein by operating on input and generating output. Suitable processors include, by way of example, both general and special purpose microprocessors. Generally, the processor receives instructions and data from a read-only memory and/or a random access memory. Storage devices suitable for tangibly embodying computer program instructions include, for example, all forms of computer-readable devices, firmware, programmable logic, hardware (e.g., integrated circuit chip; electronic devices; a computer-readable non-volatile storage unit; non-volatile memory, such as semiconductor memory devices, including EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disks; and CD-ROMs). Any of the foregoing may be supplemented by, or incorporated in, specially-designed ASICs (application-specific integrated circuits) or FPGAs (Field-Programmable Gate Arrays). A computer can generally also receive programs and data from a storage medium such as an internal disk (not shown) or a removable disk. These elements will also be found in a conventional desktop or workstation computer as well as other computers suitable for executing computer programs implementing the methods described herein, which may be used in conjunction with any digital print engine or marking engine, display monitor, or other raster output device capable of producing color or gray scale pixels on paper, film, display screen, or other output medium. A computer may also receive programs and data (including, for example, instructions for storage on non-transitory computer-readable media) from a second computer providing access to the programs via a network transmission line, wireless transmission media, signals propagating through space, radio waves, infrared signals, etc.

Referring now to FIGS. 4A, 4B, and 4C, block diagrams depict additional detail regarding computing devices that may be modified to execute novel, non-obvious functionality for implementing the methods and systems described above.

Referring now to FIG. 4A, an embodiment of a network environment is depicted. In brief overview, the network environment comprises one or more clients 402 a-402 n (also generally referred to as local machine(s) 402, client(s) 402, client node(s) 402, client machine(s) 402, client computer(s) 402, client device(s) 402, computing device(s) 402, endpoint(s) 402, or endpoint node(s) 402) in communication with one or more remote machines 406 a-406 n (also generally referred to as server(s) 406 or computing device(s) 406) via one or more networks 404.

Although FIG. 4A shows a network 404 between the clients 402 and the remote machines 406, the clients 402 and the remote machines 406 may be on the same network 404. The network 404 can be a local area network (LAN), such as a company Intranet, a metropolitan area network (MAN), or a wide area network (WAN), such as the Internet or the World Wide Web. In some embodiments, there are multiple networks 404 between the clients 402 and the remote machines 406. In one of these embodiments, a network 404′ (not shown) may be a private network and a network 404 may be a public network. In another of these embodiments, a network 404 may be a private network and a network 404′ a public network. In still another embodiment, networks 404 and 404′ may both be private networks. In yet another embodiment, networks 404 and 404′ may both be public networks.

The network 404 may be any type and/or form of network and may include any of the following: a point to point network, a broadcast network, a wide area network, a local area network, a telecommunications network, a data communication network, a computer network, an ATM (Asynchronous Transfer Mode) network, a SONET (Synchronous Optical Network) network, an SDH (Synchronous Digital Hierarchy) network, a wireless network, and a wireline network. In some embodiments, the network 404 may comprise a wireless link, such as an infrared channel or satellite band. The topology of the network 404 may be a bus, star, or ring network topology. The network 404 may be of any such network topology as known to those ordinarily skilled in the art capable of supporting the operations described herein. The network may comprise mobile telephone networks utilizing any protocol or protocols used to communicate among mobile devices (including tables and handheld devices generally), including AMPS, TDMA, CDMA, GSM, GPRS, UMTS, or LTE. In some embodiments, different types of data may be transmitted via different protocols. In other embodiments, the same types of data may be transmitted via different protocols.

A client 402 and a remote machine 406 (referred to generally as computing devices 400) can be any workstation, desktop computer, laptop or notebook computer, server, portable computer, mobile telephone, mobile smartphone, or other portable telecommunication device, media playing device, a gaming system, mobile computing device, or any other type and/or form of computing, telecommunications or media device that is capable of communicating on any type and form of network and that has sufficient processor power and memory capacity to perform the operations described herein. A client 402 may execute, operate or otherwise provide an application, which can be any type and/or form of software, program, or executable instructions, including, without limitation, any type and/or form of web browser, web-based client, client-server application, an ActiveX control, or a JAVA applet, or any other type and/or form of executable instructions capable of executing on client 402.

In one embodiment, a computing device 406 provides functionality of a web server. The web server may be any type of web server, including web servers that are open-source web servers, web servers that execute proprietary software, and cloud-based web servers where a third party hosts the hardware executing the functionality of the web server. In some embodiments, a web server 406 comprises an open-source web server, such as the APACHE servers maintained by the Apache Software Foundation of Delaware. In other embodiments, the web server executes proprietary software, such as the INTERNET INFORMATION SERVICES products provided by Microsoft Corporation of Redmond, WA, the ORACLE IPLANET web server products provided by Oracle Corporation of Redwood Shores, CA, or the ORACLE WEBLOGIC products provided by Oracle Corporation of Redwood Shores, CA.

In some embodiments, the system may include multiple, logically-grouped remote machines 406. In one of these embodiments, the logical group of remote machines may be referred to as a server farm 438. In another of these embodiments, the server farm 438 may be administered as a single entity.

FIGS. 4B and 4C depict block diagrams of a computing device 400 useful for practicing an embodiment of the client 402 or a remote machine 406. As shown in FIGS. 4B and 4C, each computing device 400 includes a central processing unit 421, and a main memory unit 422. As shown in FIG. 4B, a computing device 400 may include a storage device 428, an installation device 416, a network interface 418, an I/O controller 423, display devices 424 a-n, a keyboard 426, a pointing device 427, such as a mouse, and one or more other I/O devices 430 a-n. The storage device 428 may include, without limitation, an operating system and software. As shown in FIG. 4C, each computing device 400 may also include additional optional elements, such as a memory port 403, a bridge 470, one or more input/output devices 430 a-n (generally referred to using reference numeral 430), and a cache memory 440 in communication with the central processing unit 421.

The central processing unit 421 is any logic circuitry that responds to and processes instructions fetched from the main memory unit 422. In many embodiments, the central processing unit 421 is provided by a microprocessor unit, such as: those manufactured by Intel Corporation of Mountain View, CA; those manufactured by Motorola Corporation of Schaumburg, IL; those manufactured by Transmeta Corporation of Santa Clara, CA; those manufactured by International Business Machines of White Plains, NY; or those manufactured by Advanced Micro Devices of Sunnyvale, CA. Other examples include SPARC processors, ARM processors, processors used to build UNIX/LINUX “white” boxes, and processors for mobile devices. The computing device 400 may be based on any of these processors, or any other processor capable of operating as described herein.

Main memory unit 422 may be one or more memory chips capable of storing data and allowing any storage location to be directly accessed by the microprocessor 421. The main memory 422 may be based on any available memory chips capable of operating as described herein. In the embodiment shown in FIG. 4B, the processor 421 communicates with main memory 422 via a system bus 450. FIG. 4C depicts an embodiment of a computing device 400 in which the processor communicates directly with main memory 422 via a memory port 403. FIG. 4C also depicts an embodiment in which the main processor 421 communicates directly with cache memory 440 via a secondary bus, sometimes referred to as a backside bus. In other embodiments, the main processor 421 communicates with cache memory 440 using the system bus 450.

In the embodiment shown in FIG. 4B, the processor 421 communicates with various I/O devices 430 via a local system bus 450. Various buses may be used to connect the central processing unit 421 to any of the I/O devices 430, including a VESA VL bus, an ISA bus, an EISA bus, a MicroChannel Architecture (MCA) bus, a PCI bus, a PCI-X bus, a PCI-Express bus, or a NuBus. For embodiments in which the I/O device is a video display 424, the processor 421 may use an Advanced Graphics Port (AGP) to communicate with the display 424. FIG. 4C depicts an embodiment of a computer 400 in which the main processor 421 also communicates directly with an I/O device 430 b via, for example, HYPERTRANSPORT, RAPIDIO, or INFINIBAND communications technology.

One or more of a wide variety of I/O devices 430 a-n may be present in or connected to the computing device 400, each of which may be of the same or different type and/or form. Input devices include keyboards, mice, trackpads, trackballs, microphones, scanners, cameras, and drawing tablets. Output devices include video displays, speakers, inkjet printers, laser printers, 3D printers, and dye-sublimation printers. The I/O devices may be controlled by an I/O controller 423 as shown in FIG. 4B. Furthermore, an I/O device may also provide storage and/or an installation medium 416 for the computing device 400. In some embodiments, the computing device 400 may provide USB connections (not shown) to receive handheld USB storage devices such as the USB Flash Drive line of devices manufactured by Twintech Industry, Inc. of Los Alamitos, CA.

Referring still to FIG. 4B, the computing device 400 may support any suitable installation device 416, such as a floppy disk drive for receiving floppy disks such as 3.5-inch, 5.25-inch disks or ZIP disks; a CD-ROM drive; a CD-R/RW drive; a DVD-ROM drive; tape drives of various formats; a USB device; a hard-drive or any other device suitable for installing software and programs. In some embodiments, the computing device 400 may provide functionality for installing software over a network 404. The computing device 400 may further comprise a storage device, such as one or more hard disk drives or redundant arrays of independent disks, for storing an operating system and other software. Alternatively, the computing device 400 may rely on memory chips for storage instead of hard disks.

Furthermore, the computing device 400 may include a network interface 418 to interface to the network 404 through a variety of connections including, but not limited to, standard telephone lines, LAN or WAN links (e.g., 802.11, T1, T3, 56 kb, X.25, SNA, DECNET), broadband connections (e.g., ISDN, Frame Relay, ATM, Gigabit Ethernet, Ethernet-over-SONET), wireless connections, or some combination of any or all of the above. Connections can be established using a variety of communication protocols (e.g., TCP/IP, IPX, SPX, NetBIOS, Ethernet, ARCNET, SONET, SDH, Fiber Distributed Data Interface (FDDI), RS232, IEEE 802.11, IEEE 802.11a, IEEE 802.11b, IEEE 802.11g, IEEE 802.11n, 802.15.4, Bluetooth, ZIGBEE, CDMA, GSM, WiMax, and direct asynchronous connections). In one embodiment, the computing device 400 communicates with other computing devices 400′ via any type and/or form of gateway or tunneling protocol such as Secure Socket Layer (SSL) or Transport Layer Security (TLS). The network interface 418 may comprise a built-in network adapter, network interface card, PCMCIA network card, card bus network adapter, wireless network adapter, USB network adapter, modem, or any other device suitable for interfacing the computing device 400 to any type of network capable of communication and performing the operations described herein.

In further embodiments, an I/O device 430 may be a bridge between the system bus 450 and an external communication bus, such as a USB bus, an Apple Desktop Bus, an RS-232 serial connection, a SCSI bus, a FireWire bus, a FireWire 800 bus, an Ethernet bus, an AppleTalk bus, a Gigabit Ethernet bus, an Asynchronous Transfer Mode bus, a HIPPI bus, a Super HIPPI bus, a SerialPlus bus, a SCl/LAMP bus, a FibreChannel bus, or a Serial Attached small computer system interface bus.

A computing device 400 of the sort depicted in FIGS. 4B and 4C typically operates under the control of operating systems, which control scheduling of tasks and access to system resources. The computing device 400 can be running any operating system such as any of the versions of the MICROSOFT WINDOWS operating systems, the different releases of the UNIX and LINUX operating systems, any version of the MAC OS for Macintosh computers, any embedded operating system, any real-time operating system, any open source operating system, any proprietary operating system, any operating systems for mobile computing devices, or any other operating system capable of running on the computing device and performing the operations described herein. Typical operating systems include, but are not limited to: WINDOWS 3.x, WINDOWS 95, WINDOWS 98, WINDOWS 2000, WINDOWS NT 3.51, WINDOWS NT 4.0, WINDOWS CE, WINDOWS XP, WINDOWS 7, WINDOWS 8, WINDOWS VISTA, and WINDOWS 10 all of which are manufactured by Microsoft Corporation of Redmond, WA; MAC OS manufactured by Apple Inc. of Cupertino, CA; OS/2 manufactured by International Business Machines of Armonk, NY; Red Hat Enterprise Linux, a Linux-variant operating system distributed by Red Hat, Inc., of Raleigh, NC; Ubuntu, a freely-available operating system distributed by Canonical Ltd. of London, England; or any type and/or form of a Unix operating system, among others.

The computing device 400 can be any workstation, desktop computer, laptop or notebook computer, server, portable computer, mobile telephone or other portable telecommunication device, media playing device, a gaming system, mobile computing device, or any other type and/or form of computing, telecommunications or media device that is capable of communication and that has sufficient processor power and memory capacity to perform the operations described herein. In some embodiments, the computing device 400 may have different processors, operating systems, and input devices consistent with the device. In other embodiments, the computing device 400 is a mobile device, such as a JAVA-enabled cellular telephone/smartphone or personal digital assistant (PDA). The computing device 400 may be a mobile device such as those manufactured, by way of example and without limitation, by Apple Inc. of Cupertino, CA; Google/Motorola Div. of Ft. Worth, TX; Kyocera of Kyoto, Japan; Samsung Electronics Co., Ltd. of Seoul, Korea; Nokia of Finland; Hewlett-Packard Development Company, L.P. and/or Palm, Inc. of Sunnyvale, CA; Sony Ericsson Mobile Communications AB of Lund, Sweden; or Research In Motion Limited of Waterloo, Ontario, Canada. In yet other embodiments, the computing device 400 is a smartphone, POCKET PC, POCKET PC PHONE, or other portable mobile device supporting Microsoft Windows Mobile Software.

In some embodiments, the computing device 400 is a digital audio player. In one of these embodiments, the computing device 400 is a digital audio player such as the Apple IPOD, IPOD TOUCH, IPOD NANO, and IPOD SHUFFLE lines of devices manufactured by Apple Inc. In another of these embodiments, the digital audio player may function as both a portable media player and as a mass storage device. In other embodiments, the computing device 400 is a digital audio player such as those manufactured by, for example, and without limitation, Samsung Electronics America of Ridgefield Park, NJ, or Creative Technologies Ltd. of Singapore. In yet other embodiments, the computing device 400 is a portable media player or digital audio player supporting file formats including, but not limited to, MP3, WAV, M4A/AAC, WMA Protected AAC, AEFF, Audible audiobook, Apple Lossless audio file formats, and .mov, .m4v, and .mp4 MPEG-4 (H.264/MPEG-4 AVC) video file formats.

In some embodiments, the computing device 400 comprises a combination of devices, such as a mobile phone combined with a digital audio player or portable media player. In one of these embodiments, the computing device 400 is a device in the Google/Motorola line of combination digital audio players and mobile phones. In another of these embodiments, the computing device 400 is a device in the IPHONE smartphone line of devices manufactured by Apple Inc. In still another of these embodiments, the computing device 400 is a device executing the ANDROID open source mobile phone platform distributed by the Open Handset Alliance; for example, the computing device 400 may be a device such as those provided by Samsung Electronics of Seoul, Korea, or HTC Headquarters of Taiwan, R.O.C. In other embodiments, the computing device 400 is a tablet device such as, for example and without limitation, the IPAD line of devices manufactured by Apple Inc.; the PLAYBOOK manufactured by Research In Motion; the CRUZ line of devices manufactured by Velocity Micro, Inc. of Richmond, VA; the FOLIO and THRIVE line of devices manufactured by Toshiba America Information Systems, Inc. of Irvine, CA; the GALAXY line of devices manufactured by Samsung; the HP SLATE line of devices manufactured by Hewlett-Packard; and the STREAK line of devices manufactured by Dell, Inc. of Round Rock, TX.

Having described certain embodiments of methods and systems for dynamically generating at least one contextual user interface element within a user interface, it will be apparent to one of skill in the art that other embodiments incorporating the concepts of the disclosure may be used. Therefore, the disclosure should not be limited to certain embodiments, but rather should be limited only by the spirit and scope of the following claims. 

What is claimed is:
 1. A method comprising: receiving a request for a webpage from a computing device associated with a user of an online system; identifying a plurality of support topics associated with the webpage; accessing profile data associated with the user, wherein the profile data comprises reservation data for a travel reservation associated with the user; filtering the plurality of support topics based on the reservation data associated with the user; transmitting the web page to the computing device associated with the user, wherein the web page includes user interface elements displaying the filtered plurality of support topics; receiving a user selection of a user interface element corresponding to a selected support topic of the plurality of support topics through the web page; responsive to receiving the user selection, establishing a network connection between the computing device associated with the user and a computing device associated with a contact center agent; and modifying the webpage to display chat messages between the user and the contact center agent within a chat interface, wherein the chat messages are related to the selected support topic.
 2. The method of claim 1, wherein filtering the plurality of support topics based on the reservation data comprises: identifying a status of the travel reservation based on the reservation data; and filtering the plurality of support topics based upon the identified status.
 3. The method of claim 1, wherein accessing the profile data associated with the user comprises: querying a third-party database for the reservation data associated with the user.
 4. The method of claim 1, wherein the travel reservation is an upcoming travel reservation.
 5. The method of claim 1, wherein the travel reservation is a past travel reservation.
 6. The method of claim 1, wherein the transmitted webpage includes the chat interface and wherein the chat interface comprises the user interface elements displaying the filtered plurality of support topics.
 7. The method of claim 1, wherein modifying the webpage comprises: modifying the webpage to display the reservation data for the travel reservation.
 8. The method of claim 7, wherein modifying the webpage comprises: modifying the chat interface of the webpage to display the reservation data for the travel reservation.
 9. The method of claim 1, further comprising: receiving data from a third-party database describing a region associated with the travel reservation; and filtering the plurality of support topics based on the data from the third-party database.
 10. The method of claim 1, wherein identifying the plurality of support topics comprises: identifying a plurality of support topics associated with a URL of the webpage.
 11. A non-transitory computer-readable medium storing instructions that, when executed by a processor, cause the processor to perform operations comprising: receiving a request for a webpage from a computing device associated with a user of an online system; identifying a plurality of support topics associated with the webpage; accessing profile data associated with the user, wherein the profile data comprises reservation data for a travel reservation associated with the user; filtering the plurality of support topics based on the reservation data associated with the user; transmitting the web page to the computing device associated with the user, wherein the web page includes user interface elements displaying the filtered plurality of support topics; receiving a user selection of a user interface element corresponding to a selected support topic of the plurality of support topics through the web page; responsive to receiving the user selection, establishing a network connection between the computing device associated with the user and a computing device associated with a contact center agent; and modifying the webpage to display chat messages between the user and the contact center agent within a chat interface, wherein the chat messages are related to the selected support topic.
 12. The computer-readable medium of claim 11, wherein filtering the plurality of support topics based on the reservation data comprises: identifying a status of the travel reservation based on the reservation data; and filtering the plurality of support topics based upon the identified status.
 13. The computer-readable medium of claim 11, wherein accessing the profile data associated with the user comprises: querying a third-party database for the reservation data associated with the user.
 14. The computer-readable medium of claim 11, wherein the travel reservation is an upcoming travel reservation.
 15. The computer-readable medium of claim 11, wherein the travel reservation is a past travel reservation.
 16. The computer-readable medium of claim 11, wherein the transmitted webpage includes the chat interface and wherein the chat interface comprises the user interface elements displaying the filtered plurality of support topics.
 17. The computer-readable medium of claim 11, wherein modifying the webpage comprises: modifying the webpage to display the reservation data for the travel reservation.
 18. The computer-readable medium of claim 17, wherein modifying the webpage comprises: modifying the chat interface of the webpage to display the reservation data for the travel reservation.
 19. The computer-readable medium of claim 11, wherein the operations further comprise: receiving data from a third-party database describing a region associated with the travel reservation; and filtering the plurality of support topics based on the data from the third-party database.
 20. The computer-readable medium of claim 11, wherein identifying the plurality of support topics comprises: identifying a plurality of support topics associated with a URL of the webpage. 